package com.briup.bms.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import com.briup.bms.bean.Employee;
import com.briup.bms.common.exceptions.BmsServiceException;
import com.briup.bms.common.utils.JWTUtils;
import com.briup.bms.common.utils.ResultCode;
import com.briup.bms.dao.IEmpMapper;
import com.briup.bms.service.IAuthService;
import com.briup.bms.web.vm.UserToken;

@Service
public class AuthServiceImpl implements IAuthService {
	
	@Autowired
	private IEmpMapper empMapper;
	
	
	@Override
	public UserToken login(String userId, String password) {
		if(ObjectUtils.isEmpty(userId)) {
			throw new BmsServiceException(ResultCode.PARAM_NOT_EXIST, "用户id不能为空！");
		}
		if(ObjectUtils.isEmpty(password)) {
			throw new BmsServiceException(ResultCode.PARAM_NOT_EXIST, "密码不能为空！");
		}
		//判断用户名和密码是否和数据库中存储的用户名和密码匹配。。。
		//1. 定义数据访问接口
		//2.根据用户id查找用户信息。 （根据用户id和密码一起找）
		Employee emp = empMapper.findUserId(userId);
		if(emp==null) {
			throw new BmsServiceException(ResultCode.AUTH_FAILURE, "用户名或密码错误！");
		}
		//3.判断密码是否正确。  
		if(!password.equals(emp.getPassword())) {
			throw new BmsServiceException(ResultCode.AUTH_FAILURE, "用户名或密码错误！");
		}
		//4. 如果验证通过，生成jwt字符串
		String token = JWTUtils.generateJWT(emp);
		//5.将生成的令牌信息返回给前端页面。
		UserToken userToken = new UserToken();
		userToken.setTitle(emp.getTitle());
		userToken.setUserId(userId);
		userToken.setUsername(emp.getUsername());
		userToken.setToken(token);
		return userToken;
	}

}
